/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package clases_anidadas.locales_a_metodo;

/**
 *
 * @author Luis_Angel
 */
 class Externa {
    private String var1="s";

    public void proceso(){
        int indice=5;//no se puede acceder a esta variable desde la clase interna
                       // a excepcion que sea "final".
        final int cons=5;
         class Interna{
            public void metodoInterno1(){
                System.out.println("llamada al metodo interno de metodo 1");
            }

            public void metodoInterno2(){
                //accediendo a varialbles de miembro de la clase externa.
                System.out.println("usando variable de clase externa : " + var1);
            }

            private void muestra(){
                //no compila >> System.out.println("accediendo a variable de metodo : " + indice);
                //si es correcto:
                System.out.println("accediendo a variable con modificador final de metodo : " + cons);
            }
        }
         
        //solo se puede instanciar en el metodo luego de declararse.
         Interna in = new Interna();
         in.metodoInterno1();
         in.metodoInterno2();
         in.muestra();
    }
    
   
  }

 public class Ejemplo1{
     public static void main(String[] args){
        Externa ex = new Externa();
        ex.proceso();
     }
 }
